package net.hn.hnms.biz.process.service;

import net.hn.hnms.biz.process.domain.*;
import net.hn.hnms.biz.process.domain.dto.InspectionCheckDto;
import net.hn.hnms.biz.process.domain.dto.InspectionCheckPoDto;
import net.hn.hnms.biz.process.domain.dto.InspectionConfigDto;
import net.hn.hnms.biz.process.domain.vo.InspectionCheckInfoVo;
import net.hn.hnms.biz.process.domain.vo.InspectionCheckVo;
import net.hn.hnms.sys.common.core.domain.ResponsePage;
import net.hn.hnms.sys.common.mybatis.core.page.PageQuery;
import net.hn.hnms.sys.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 巡检管理-巡检(ScglInspectionManagement)表服务接口
 *
 * @author Wanglong
 * @since 2022-07-25 15:15:05
 */
public interface InspectionService {
    /**
     * 功能描述: 新增巡检管理
     * @auther: WangLong
     * @date: 2022/8/4 10:42
     * @param inspectionConfigPo
     * @return java.lang.Boolean
     */

    Boolean addConfig(InspectionConfigPo inspectionConfigPo);

    /**
     * 功能描述: 批量删除巡检管理
     * @auther: WangLong
     * @date: 2022/8/4 10:50
     * @param idList
     * @return java.lang.Boolean
     */

    Boolean deleteConfigList(List<String> idList);

    /**
     * 功能描述: 修改巡检管理
     * @auther: WangLong
     * @date: 2022/8/4 10:56
     * @param inspectionConfigPo
     * @return java.lang.Boolean
     */

    Boolean upDateConfig(InspectionConfigPo inspectionConfigPo);

    /**
     * 功能描述: 修改巡检管理状态Status
     * @auther: WangLong
     * @date: 2022/8/4 11:01
     * @param id
     * @return java.lang.Boolean
     */

    Boolean chengConfigStatus(String id);

    /**
     * 功能描述: 分页条件巡检管理
     * @auther: WangLong
     * @date: 2022/8/4 11:18
     * @param pageQuery
     * @param inspectionConfigPo
     * @return net.hn.hnms.sys.common.mybatis.core.page.TableDataInfo<net.hn.hnms.biz.process.domain.InspectionConfigPo>
     */

    TableDataInfo<InspectionConfigPo> pageConfig(PageQuery pageQuery, InspectionConfigPo inspectionConfigPo);

    /**
     * 功能描述: 添加巡检内容
     * @auther: WangLong
     * @date: 2022/8/4 13:32
     * @param inspectionConfigContentPo
     * @return java.lang.Boolean
     */

    Boolean addConfigContent(List<InspectionConfigContentPo> inspectionConfigContentPo);

    /**
     * 功能描述: 修改巡检内容
     * @auther: WangLong
     * @date: 2022/8/4 14:06
     * @param inspectionConfigContentPo
     * @return java.lang.Boolean
     */

    Boolean upDateContent(List<InspectionConfigContentPo> inspectionConfigContentPo);

    /**
     * 功能描述: deleteContent
     * @auther: WangLong
     * @date: 2022/8/4 14:09
     * @param idList
     * @return java.lang.Boolean
     */

    Boolean deleteContent(List<String> idList);

    /**
     * 功能描述: 添加巡检检查计划(下发计划)
     * @auther: WangLong
     * @date: 2022/8/4 14:16
     * @param inspectionCheckPoDto
     * @return java.lang.Boolean
     */

    Boolean addCheck(InspectionCheckPoDto inspectionCheckPoDto);

    /**
     * 功能描述: 批量删除巡检管理检查计划
     * @auther: WangLong
     * @date: 2022/8/4 14:49
     * @param idList
     * @return java.lang.Boolean
     */

    Boolean deleteCheck(List<String> idList);

    /**
     * 功能描述: 更新检查计划结果(完成当前检查计划内容)
     * @auther: WangLong
     * @date: 2022/8/4 16:42
     * @param inspectionCheckResultPo
     * @param multipartFile
     * @return java.lang.Boolean
     */

    Boolean upDateCheckResult(InspectionCheckResultPo inspectionCheckResultPo, MultipartFile multipartFile);

    /**
     * 功能描述: 根据巡检管理ID查询巡检内容列表
     * @auther: WangLong
     * @date: 2022/8/5 10:45
     * @param id
     * @return java.util.List<net.hn.hnms.biz.process.domain.InspectionConfigContentPo>
     */

    List<InspectionConfigContentPo> getContentById(String id);

    /**
     * 功能描述: 查询检查计划列表
     * @auther: WangLong
     * @date: 2022/8/5 10:57
     * @param inspectionCheckPo
     * @return java.util.List<net.hn.hnms.biz.process.domain.vo.InspectionCheckVo>
     */

    List<InspectionCheckVo> getCheckList(InspectionCheckPo inspectionCheckPo);

    /**
     * 功能描述: 根据检查计划ID查询巡检结果内容列表
     * @auther: WangLong
     * @date: 2022/8/5 13:37
     * @param id
     * @return java.util.List<net.hn.hnms.biz.process.domain.InspectionCheckResultPo>
     */

    List<InspectionCheckInfoVo> getResultById(String id);


    Boolean configAdd(InspectionConfigDto inspectionCheckPo);

    Boolean configUpdate(InspectionConfigDto inspectionConfigDto);

    ResponsePage<InspectionConfigDto> configPageList(PageQuery pageQuery, InspectionConfigPo inspectionConfigPo);

    ResponsePage<InspectionCheckVo> checkPageList(PageQuery pageQuery, InspectionCheckDto inspectionCheckDto);

    /**
     * 修改巡检检查计划
     * @param inspectionCheckPo
     * @return
     */
    Boolean updateCheck(InspectionCheckPo inspectionCheckPo);

    Boolean updateResultList(List<InspectionCheckInfoVo> inspectionCheckInfoVoList);

    /**
     * 我的巡检检查计划
     * @return
     */
    ResponsePage<InspectionCheckVo> myCheckPageList(String mineCode);

    /**
     * 设备管理-新增
     * @param inspectionDevicPo
     * @return
     */
    Boolean deviceAdd(InspectionDevicPo inspectionDevicPo);

    /**
     * 设备管理-批量删除
     * @param idList
     * @return
     */
    Boolean deviceDelete(List<String> idList);

    /**
     * 设备管理-修改
     * @param inspectionDevicPo
     * @return
     */
    Boolean deviceUpdate(InspectionDevicPo inspectionDevicPo);

    /**
     * 设备管理-分页查询
     * @return
     */
    ResponsePage<InspectionDevicPo> devicePageList(PageQuery pageQuery,String mineCode);

    /**
     * 设备管理-根据ID查询设备详情
     * @param id
     * @return
     */
    InspectionDevicPo deviceById(String id);
}
